const { defineConfig } = require('@vue/cli-service');
const path = require('path');
module.exports = defineConfig({
  transpileDependencies: true,
  publicPath: process.env.NODE_ENV === 'development' ? '/' : '/activity/offer_20231108',
  filenameHashing: true,
  chainWebpack: (config) => {
    config.resolve.symlinks(true); // 修复热更新失效
    config.resolve.alias
      .set('@', path.join(__dirname, 'src'))
      .set('@/assets', path.join(__dirname, 'src/assets'));
      config.module
      .rule('images')
      .test(/\.(png|jpe?g|gif|webp)(\?.*)?$/)
      .use('image-webpack-loader')
      .loader('image-webpack-loader')
      .options({
        disable: false, //process.env.NODE_ENV == 'development' ? true : false, // 开发环境禁用压缩，生产环境才做压缩，提升开发调试速度
        mozjpeg: { progressive: true, quality: 80 }, // 压缩JPEG图像，压缩质量quality范围0到100
        optipng: { enabled: true }, // 压缩PNG图像
        pngquant: { quality: [0.65, 0.9], speed: 4 }, // 质量区间和速度
        gifsicle: { interlaced: false },
        webp: { quality: 75 }, // 压缩webp图片，压缩质量quality范围0到100
      })
      .end()
      // .use('url-loader')
      // .loader('url-loader')
      // .options({
      //   limit: 50000, // 默认 10000 小于10k
      //   // 以下配置项用于配置file-loader
      //   // 根据环境使用cdn或相对路径
      //   // publicPath: process.env.VUE_APP_IMAGE_PATH,
      //   // 将图片打包到images文件夹下, 不配置则打包到dist文件夹下
      //   // outputPath: process.env.VUE_APP_DIR_NAME,
      //   // 配置打包后图片文件名
      //   name: `img/[name].[hash:7].[ext]`,
      //   // name: process.env.VUE_APP_DIR_NAME+'/[name].[hash:7].[ext]',
      //   esModule: false,
      // })
      // .end();
  },
  css: {
    loaderOptions: {
      postcss: {
        postcssOptions: {
          plugins: [
            require('postcss-plugin-px2rem')({
              rootValue: 75, // 换算基数，默认100，这样的话把根标签的字体规定为1rem为50px,这样就可以从设计稿上量出多少个px直接在代码中写多上px了。
              // unitPrecision: 5, // 允许REM单位增长到的十进制数字。
              // propWhiteList: [], // 默认值是一个空数组，这意味着禁用白名单并启用所有属性。
              // propBlackList: [], // 黑名单
              exclude: /PC|HomePC|StateHeight/i, // 默认false，可以（reg）利用正则表达式排除某些文件夹的方法，例如/(node_module)/ 。如果想把前端UI框架内的px也转换成rem，请把此属性设为默认值
              selectorBlackList: [], // 要忽略并保留为px的选择器
              // ignoreIdentifier: false, // （boolean/string）忽略单个属性的方法，启用ignoreidentifier后，replace将自动设置为true。
              // replace: true, // （布尔值）替换包含REM的规则，而不是添加回退。
              mediaQuery: false, // （布尔值）允许在媒体查询中转换px。
              minPixelValue: 1, // 设置要替换的最小像素值(3px会被转rem)。 默认 0
            }),
            require('autoprefixer') ({
              overrideBrowserslist: ['last 2 versions', '>1%', 'ios 7']
            })
          ]
        }
      }
    }
  }
});
